home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 January: Mac OS SDK / Dev.CD Jan 96 SDK / Dev.CD Jan 96 SDK1.toast / Development Kits (Disc 1) / AOCE / Development Tools / Sample Code / Catalog Service Access Module / DTS Sample CSAM / Src / GetCSAMIcon.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-24  |  1.5 KB  |  68 lines  |  [TEXT/KAHL]

  1. /*                                    GetCSAMIcon.c                                */
  2. /*
  3.  * GetCSAMIcon.c
  4.  * Copyright © 1992-93 Apple Computer Inc. All Rights Reserved.
  5.  *
  6.  * Read an icon suite (a vector of icon handles) into the
  7.  * system heap. Note that this is called only by the OpenDRVR
  8.  * function, and at a time when the Memory Manager and Resource
  9.  * Manager may be called.
  10.  */
  11. #include "DTSSampleCSAM.h"
  12.  
  13. /*
  14.  * Load one icon into the private storage area.
  15.  */
  16. OSErr
  17. GetCSAMIcon(
  18.         DTSSampleCSAMInfoPtr    infoPtr,
  19.         short                    i
  20.     )
  21. {
  22.         OSErr                    status;
  23.         Handle                    iconHdl;
  24.         register IconInfoPtr    iconInfoPtr;
  25.         ResType                    iconType;
  26. #define ICON    (*iconInfoPtr)
  27.  
  28.         /*
  29.          *** MPW can't store a const vector in the
  30.          *** code segment.
  31.          */
  32.         switch (i) {
  33.         case 0:        iconType = large1BitMask;    break;
  34.         case 1:        iconType = large8BitData;    break;
  35.         case 2:        iconType = large4BitData;    break;
  36.         case 3:        iconType = small8BitData;    break;
  37.         case 4:        iconType = small4BitData;    break;
  38.         default:
  39.         case 5:        iconType = small1BitMask;    break;
  40.         }
  41.         iconHdl = GetResource(iconType, kIconID);
  42.         if (iconHdl == NULL)
  43.             status = resNotFound;
  44.         else {
  45.             DetachResource(iconHdl);
  46.             status = ResError();
  47.         }
  48.         if (status == noErr) {
  49.             MoveHHi(iconHdl);
  50.             status = MemError();
  51.         }
  52.         if (status == noErr) {
  53.             HLock(iconHdl);
  54.             status = MemError();
  55.         }
  56.         if (status == noErr) {
  57.             iconInfoPtr = &INFO.icons[i];
  58.             ICON.iconData = iconHdl;
  59.             ICON.iconType = iconType;
  60.             ICON.iconLength = GetHandleSize(iconHdl);
  61.             status = MemError();
  62.         }
  63.         LogError('GetI', status);
  64.         return (status);
  65. #undef ICON
  66. }
  67.  
  68.